<?php

class CorrelativosController extends AppController {
    var $name = 'Correlativos';
    var $uses = array('Correlativo','TiendaLocal','Documento');
    var $components = array('Utilitario','Interfaz','Vista','Maestro','Util');
    var $helpers = array('Html','Ajax','Javascript','Vista','Interfaz');
    var $layout = "ajax";

    function beforeFilter(){
        $this->validar();
    }
    
    function index($busq = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $this->Vista->title("Tiendas - Correlativos (Secuencias Individuales Por Punto)");
        $this->set('busq', $busq);

        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendasUsuario = $this->Maestro->listar_tienda_usuarios($tiendas);
        $listaTiendasPermitidas = $this->Util->tiendasActivas($listaTiendasUsuario);
        $tiendasId = array();

        foreach ($listaTiendasPermitidas as $llave => $valor) {
            $tiendasId[] = $llave;
        }

        $listaTiendas = $this->TiendaLocal->find('all', array('conditions' => array('TiendaLocal.id' => $tiendasId, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.codigo'));
        $this->set('data', $listaTiendas);
    }
    
    public function nuevo() {
        $this->Tienda->virtualFields['nombrecompleto'] = 'Tienda.codigo || \'-\' || Tienda.nombre';

        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendasUsuario = $this->Maestro->listar_tienda_usuarios($tiendas);
        $listaTiendasPermitidas = $this->Util->tiendasActivas($listaTiendasUsuario);
        $tiendasId = array();

        foreach ($listaTiendasPermitidas as $llave => $valor) {
            $tiendasId[] = $llave;
        }

        $listaTiendas = $this->TiendaLocal->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('TiendaLocal.id' => $tiendasId, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.id'));
        $this->set('listaTiendas', $listaTiendas);
        $doc=$this->Documento->find('all',array('conditions'=>array('Documento.estatus'=>1)));
        $this->set('doc',$doc);
    }
    
    public function buscar_documentos($id_tienda=null) {
        if(!empty($id_tienda)){
            $doc=$this->Documento->find('all',array('conditions'=>array('Documento.estatus'=>1)));
            $this->set('doc',$doc);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $id_tienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjSerial = $this->Maestro->modelo('punto', 'Serial', $BdPunto);
            $ObjSerial->virtualFields['nombrecompleto'] = 'Serial.serie || \'(\' || Serial.desde || \'-\'  || Serial.hasta || \')\'';
            $listaSerial = $ObjSerial->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Serial.estatus' => 1), 'order' => 'Serial.id desc'));
            $this->set('listaSerial', $listaSerial);
        }
        else{
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }

    public function guardar(){
        $data = $this->request->data;
        //pr($data);
        if (!$this->Vista->empyt($data)) {
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $data['tienda_id'])));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
            //if (!$this->Vista->verifica_punto('Correlativo', $ObjCorrelativo, 'nombre', $data['nombre'], 'nombre')) {

                $doc=$this->Documento->find('all',array('fields' => array('Documento.id','Documento.campo_bd'),'conditions'=>array('Documento.estatus'=>1)));
                $corre=array();
                foreach ($doc as $valor) {
                    $nom='numero_'.$valor['Documento']['id'];
                    $apl_for='aplica_'.$valor['Documento']['id'];
                    $c1=$valor['Documento']['campo_bd'];
                    $c2='ctl_'.$valor['Documento']['campo_bd'];
                    $corre['Correlativo'][$c1]=$data[$nom]-1;
                    $corre['Correlativo'][$c2]=$data[$apl_for];//$data[$ser];
                }
                $corre['Correlativo']['tienda_id']=$data['tienda_id'];//$data[$ser];
                $corre['Correlativo']['nombre']=$data['nombre'];//$data[$ser];
                $corre['Correlativo']['usuario_id'] = $this->Interfaz->id($_SESSION['usuario_id']);
                $corre['Correlativo']['estatus'] = 2;
                $ObjCorrelativo->query('BEGIN WORK');
                if ($ObjCorrelativo->save($corre)) {
                    $this->Vista->mensaje("Correlativo Individual Guardado Exitosamente!!!", 'EXITO');
                    $ObjCorrelativo->query('COMMIT');
                    $this->Vista->cerrar_ventana($data['vent']);
                    
                } else {
                    $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR');
                    $ObjCorrelativo->query('ROLLBACK');
                }
                
           /* } else {
                $this->Vista->mensaje("Nombre de Correlativo ya existe!!!", 'ERROR');
            }*/
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }

     public function ver($idTienda = null) {
        $doc=$this->Documento->find('all',array('conditions'=>array('Documento.estatus'=>1)));
        $this->set('doc',$doc);
        $idTienda = $this->Interfaz->id($idTienda);
        $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
        $BdPunto = $tienda['TiendaLocal']['base_datos'];
        $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
        $listaCorrelativo = $ObjCorrelativo->find('all', array('conditions' => array('Correlativo.id >' => 0)));
        $this->set('data', $listaCorrelativo);
        $this->set('busq', null);
        $this->set('datosTienda', $tienda);
        $this->set('idTienda', $idTienda);
        //pr($listaCorrelativo);
    }

    public function modificar($tipo=2,$idSerie = null, $idTienda = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA 
        $data = $this->request->data;
        if (!empty($data)) {
            if (!$this->Vista->empyt($data)) {
                extract($data);
                $idTienda = $this->Interfaz->id($idTiendaMod);
                $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $idTienda)));
                $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
                $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
                $id = $this->Interfaz->id($id_correlativo);
                
                //if (!$this->Vista->verifica_punto('Correlativo', $ObjCorrelativo, 'nombre', $nombre, 'nombre',$id)) {
                    $doc=$this->Documento->find('all',array('fields' => array('Documento.id','Documento.campo_bd'),'conditions'=>array('Documento.estatus'=>1)));
                    $ObjCorrelativo->query('BEGIN WORK');
                    $datos['Serial']['id'] = $id;
                    $corre=array();
                    foreach ($doc as $valor) {
                        $nom='numero_'.$valor['Documento']['id'];
                        $apl_for='aplica_'.$valor['Documento']['id'];
                        $c1=$valor['Documento']['campo_bd'];
                        $c2='ctl_'.$valor['Documento']['campo_bd'];
                        $corre['Correlativo'][$c1]=$data[$nom]-1;
                        $corre['Correlativo'][$c2]=$data[$apl_for];
                    }
                    $corre['Correlativo']['nombre']=$data['nombre'];
                    $corre['Correlativo']['id']=$id;
                    pr($corre);
                    if ($ObjCorrelativo->save($corre)) {
                        $ObjCorrelativo->query('COMMIT');
                        $this->Vista->mensaje("Correlativo (Secuencia Individual) Actualizada Exitosamente", 'EXITO');
                        //$this->log();
                        $this->Vista->cerrar_ventana($vent);
                    } else {
                        $ObjCorrelativo->query('ROLLBACK');
                        $this->Vista->mensaje("Ocurrio un error Modificando", 'ERROR');
                    }
                    
                /*} else {
                    $this->Vista->mensaje("NOmbre de Correlativo ya existe!!!", 'ERROR');
                }*/
                
            }
            else
                $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
            
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
        else {
            $idSerie = $this->Interfaz->id($idSerie);
            $idTienda = $this->Interfaz->id($idTienda);
            if (is_numeric($idSerie)) {
                $this->Tienda->virtualFields['nombrecompleto'] = 'Tienda.codigo || \'-\' || Tienda.nombre';
                $listaTiendas = $this->Tienda->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('Tienda.id >' => '0', 'Tienda.estatus' => 1), 'order' => 'Tienda.id'));
                $this->set('listaTiendas', $listaTiendas);
                $doc=$this->Documento->find('all',array('conditions'=>array('Documento.estatus'=>1)));
                $this->set('doc',$doc);
                $BdPunto = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos', 'conditions' => array('TiendaLocal.id' => $idTienda)));
                $BdPunto = $BdPunto['TiendaLocal']['base_datos'];
                $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
                $datos = $ObjCorrelativo->find('first', array('conditions' => array('Correlativo.id' => $idSerie)));
                $this->set('data', $datos);
                $this->set('idTienda', $idTienda);
                $this->set('tipo', $tipo);
            } else {
                $this->Vista->mensaje("Correlativo (Secuencia Individual) Inv&aacute;lida", 'ERROR');
                $this->render("../" . PRINCIPAL . "/mensajes");
            }
        }
    }

    public function cambiar($id = null, $idTienda = null, $estatus = null) {
        //$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $idTienda = $this->Interfaz->id($idTienda);
            $tienda = $this->TiendaLocal->find('first', array('fields' => 'TiendaLocal.base_datos, TiendaLocal.codigo, TiendaLocal.nombre', 'conditions' => array('TiendaLocal.id' => $idTienda)));
            $BdPunto = $tienda['TiendaLocal']['base_datos'];
            $ObjCorrelativo = $this->Maestro->modelo('punto', 'Correlativo', $BdPunto);
            $ObjCorrelativo->query('BEGIN WORK');
            if ($estatus == 1) {
                $msj = "Correlativo Secuencia Individual Habilitada Exitosamente";
            } else {
                $msj = "Correlativo Secuencia Individual Anulada Exitosamente";
            }
            $data['Correlativo']['id'] = $id;
            $data['Correlativo']['estatus'] = $estatus;
            if ($ObjCorrelativo->save($data)) {
                $ObjCorrelativo->query('COMMIT');
                $this->Vista->mensaje($msj, 'EXITO');
                //$this->log();
            } else {
                $ObjCorrelativo->query('ROLLBACK');
                $this->Vista->mensaje($msj, 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Forma Libre Inv&aacute;lida", 'ERROR');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }
}
?>